home *** CD-ROM | disk | FTP | other *** search
/ Interactive Media Design Review 1999 / Interactive Media Design Review 1999.iso / pc / allfiles / Itch / work_info / xmasCard.dcr / 00090_turkyParent.ls < prev    next >
Encoding:
Text File  |  1999-03-07  |  5.0 KB  |  199 lines

  1. property ancestor, knocks, T1, T2, T3, T4, T5, interestTime, nextPic, eattimer, speed, ang, leftAng, rightAng, turnspeed, lastSide, eyeSight, angleOfView, hitDistance, HalfangleOfView, thingsSeenList
  2. global viewObj, mouseObj, world, VScreen, Fcir, Hcir, Qcir, TQcir, radInDeg, degInRad
  3.  
  4. on new me
  5.   me.ancestor = new(script("basicParent"))
  6.   init(me)
  7.   return me
  8. end
  9.  
  10. on init me
  11.   eattimer = 0
  12.   me.zHeight = 20
  13.   knocks = 1
  14.   nextPic = 0
  15.   me.type = #turky
  16.   me.posH = 150
  17.   me.posV = 500
  18.   T1 = new(script("partParent"), 0, 0, "T1")
  19.   T2 = new(script("partParent"), 0, 0, "T2")
  20.   T3 = new(script("partParent"), 0, 0, "fill2")
  21.   T4 = new(script("partParent"), 0, 0, "target")
  22.   T5 = new(script("partParent"), -111, -22, "numLeft")
  23.   addProp(ancestor.partlist, me.type, T1)
  24.   addProp(ancestor.partlist, me.type, T2)
  25.   addProp(ancestor.partlist, me.type, T3)
  26.   addProp(ancestor.partlist, me.type, T4)
  27.   addProp(ancestor.partlist, me.type, T5)
  28.   makeMyRect(me)
  29.   addVal(VScreen, me.posH, me.posV, me)
  30.   speed = 1
  31.   ang = convertAng(270)
  32.   turnspeed = 0.20000000000000001
  33.   lastSide = turnspeed
  34.   eyeSight = 100
  35.   angleOfView = 40
  36.   hitDistance = 15
  37.   HalfangleOfView = convertAng(angleOfView / 2)
  38.   me.posH = me.posH + 40
  39.   me.posV = me.posV + 50
  40.   move(me, 0, 0, 1)
  41. end
  42.  
  43. on update me
  44.   a = rect(me.posH - eyeSight, me.posV - eyeSight, me.posH + eyeSight, me.posV + eyeSight)
  45.   bugList = getallInRect(VScreen, a, me)
  46.   getinViewListH(me, bugList)
  47.   decide(me)
  48. end
  49.  
  50. on decide me
  51.   if eattimer > the ticks then
  52.     T3.mem = member("fill" & random(4))
  53.   else
  54.     T3.mem = member("fill1")
  55.   end if
  56.   if count(thingsSeenList) > 0 then
  57.     firstThing = getAt(thingsSeenList, 1)
  58.     case firstThing.type of
  59.       #food:
  60.         grabbedObj = firstThing.obj
  61.         countdown(world, grabbedObj)
  62.         if firstThing.dist < hitDistance then
  63.           puppetSound(1, "Squishy")
  64.           add(deleteList, grabbedObj)
  65.           deleteObj(grabbedObj)
  66.           eattimer = the ticks + (30 * 4)
  67.           return 
  68.         end if
  69.         grabbedObj.ownControll = 0
  70.         a = (me.posH - grabbedObj.posH) / 4
  71.         b = (me.posV - grabbedObj.posV) / 4
  72.         moveTo(firstThing.obj, a, b)
  73.     end case
  74.   end if
  75. end
  76.  
  77. on knock me, ang
  78.   addHit(me, ang)
  79. end
  80.  
  81. on addHit me, ang
  82.   return 
  83.   knocks = knocks + 1
  84.   if knocks > 4 then
  85.     knocks = 1
  86.     nextPic = nextPic + 1
  87.     if nextPic < 6 then
  88.       interestTime = the timer + (30 * 2)
  89.       a = the number of member "ball"
  90.       T1.mem = member(a + nextPic)
  91.     else
  92.       me.ofInterest = 0
  93.     end if
  94.     speedhit = 30
  95.     g = findMotion(ang)
  96.     move(me, integer(getAt(g, 1) * speedhit), integer(getAt(g, 2) * speedhit), ang)
  97.   else
  98.     speedhit = 6
  99.     g = findMotion(ang)
  100.     move(me, integer(getAt(g, 1) * speed), integer(getAt(g, 2) * speedhit), ang)
  101.   end if
  102. end
  103.  
  104. on draw me, sp, offsetH, offsetV
  105.   sp = draw(T2, sp, offsetH, offsetV)
  106.   sp = draw(T3, sp, offsetH, offsetV)
  107.   draw(T1, 4, offsetH, offsetV)
  108.   draw(T4, 5, offsetH, offsetV)
  109.   draw(T5, 120, offsetH, offsetV)
  110.   return sp
  111. end
  112.  
  113. on getinViewListH me, objList
  114.   me.leftAng = me.ang - HalfangleOfView
  115.   me.rightAng = me.ang + HalfangleOfView
  116.   thingsSeenList = [:]
  117.   if me.leftAng < 0 then
  118.     me.leftAng = me.leftAng + Fcir
  119.     InView2(me, objList)
  120.   else
  121.     if me.rightAng > Fcir then
  122.       me.rightAng = me.rightAng - Fcir
  123.       InView2(me, objList)
  124.     else
  125.       InView1(me, objList)
  126.     end if
  127.   end if
  128. end
  129.  
  130. on InView2 me, objList
  131.   repeat with x in objList
  132.     if x.ofInterest = 0 then
  133.       next repeat
  134.     end if
  135.     if x = me then
  136.       next repeat
  137.     end if
  138.     if x = mouseObj then
  139.       next repeat
  140.     end if
  141.     tempAng = findAngle(me.posH, me.posV, x.posH, x.posV)
  142.     dist = getDistNum(x.posH, x.posV, me.posH, me.posV)
  143.     if dist > eyeSight then
  144.       next repeat
  145.     end if
  146.     if (tempAng < me.leftAng) and (tempAng > me.rightAng) then
  147.       next repeat
  148.     end if
  149.     if tempAng > Hcir then
  150.       if (me.ang < tempAng) and (me.ang > Hcir) then
  151.         side = turnspeed
  152.       else
  153.         side = -turnspeed
  154.       end if
  155.     else
  156.       if (me.ang > tempAng) and (me.ang < Hcir) then
  157.         side = -turnspeed
  158.       else
  159.         side = turnspeed
  160.       end if
  161.     end if
  162.     temp = x.type
  163.     temp2 = gettypeVal(me, temp) + dist
  164.     addProp(thingsSeenList, temp2, new(script("seenParent"), dist, side, temp, x))
  165.     sort(thingsSeenList)
  166.   end repeat
  167. end
  168.  
  169. on InView1 me, objList
  170.   repeat with x in objList
  171.     if x.ofInterest = 0 then
  172.       next repeat
  173.     end if
  174.     if x = me then
  175.       next repeat
  176.     end if
  177.     if x = mouseObj then
  178.       next repeat
  179.     end if
  180.     tempAng = findAngle(me.posH, me.posV, x.posH, x.posV)
  181.     dist = getDistNum(x.posH, x.posV, me.posH, me.posV)
  182.     if dist > eyeSight then
  183.       next repeat
  184.     end if
  185.     if (tempAng < me.leftAng) or (tempAng > me.rightAng) then
  186.       next repeat
  187.     end if
  188.     if tempAng > ang then
  189.       side = turnspeed
  190.     else
  191.       side = -turnspeed
  192.     end if
  193.     temp = x.type
  194.     temp2 = gettypeVal(me, temp) + dist
  195.     addProp(thingsSeenList, temp2, new(script("seenParent"), dist, side, temp, x))
  196.     sort(thingsSeenList)
  197.   end repeat
  198. end
  199.